package eiisan.util.model.response;

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * 分页查询数据<br>
 * 所有分页查询接口均需使用此类型作为包装.<br>
 * @author gragonfly
 * @date 2019/6/22
 **/
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
public class PageData<T> {

	private static final long serialVersionUID = 1L;

	/**
	 * 页码数
	 */
	@Getter
	private int pageNum;

	/**
	 * 单页容量
	 */
	@Getter
	private int pageSize;

	/**
	 * 查询总数
	 */
	@Getter
	private long total;

	/**
	 * 分页数据
	 */
	@Getter
	private Collection<T> page;

	/**
	 * 转换成list
	 */
	public List<T> list() throws ClassCastException {
		return (List<T>) page;
	}

	/**
	 * 转换成set
	 */
	public Set<T> set() throws ClassCastException {
		return (Set<T>) page;
	}

}
